// manager/pages/personalinfo/index.js
import config from '../../../utils/config';
import { request, uploadFile } from '../../../utils/request';
import WxValidate from '../../../common/WxValidate';
Page({

    /**
     * 页面的初始数据
     */
    data: {
        baseUrl: config.baseUrl,
        userInfo: {},
        form: {
            // registId: "",
            phoneno: "",
            postId: "",
            deptId: "",
            sex: "",
        },
        postList: [],
        deptList: [],
        sexList: [],
        showCropper: false,
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        this.initValidate()
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {
        // this.getUserInfo();
        // this.getPostList();
        // this.getDeptList();
        // this.getUserSexList();
    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {
        this.getUserInfo();
        this.getPostList();
        this.getDeptList();
        this.getUserSexList();
        // this.getAvatarQrcode();
    },


    /**
     * 输入框输入时
     */
    input(e){
        let key = e.target.dataset.key;
        this.setData({
            ['form.'+key]: e.detail.value
        })
    },

    /**
     * 选择框变化时
     */
    pickerChagne(e){
        let { key, value } = e.detail;
        this.setData({
            ['form.'+key]: value
        })
    },

    /**
     * radio-tree变化时
     */
    treeConfirm(e){
        console.log("tree",e)
        let { key, item } = e.detail;
        this.setData({
            ['form.'+key]: item.id
        })
    },

    // 获取用户登录信息
    getUserInfo(callback) {
        request({
            url: "/user/getUserInfo",
            reqRSAENCRY: true, // 参数是否加密
            resRSADECRY: true, // 返回值是否解密
            data: {}
        }).then(res => {
            if(res.code == 0){
                let userInfo = res.data.userInfo;
                let { form } = this.data;
                for(let key in form){
                    form[key] = userInfo[key];
                }
                this.setData({
                    userInfo,
                    form
                })
                callback&&callback();
            }
        }).catch(error => {
            // console.log(error)
        })
    },

    // 获取岗位列表
    getPostList(e) {      
        request({
            url: "/commonApi/getPostList",
            method: "GET"
        }).then(res => {
            // console.log(res)
            if(res.code == 0){
                this.setData({
                    postList: res.data
                })
            }
        }).catch(error => {
            // console.log(error)
        })
    },

    // 获取机构列表
    getDeptList(e) {      
        request({
            url: "/commonApi/getOrgList",
            method: "GET"
        }).then(res => {
            if(res.code == 0){
                // let deptList = this.getTreeList(res.data,0);
                this.setData({
                    deptList: res.data
                })
            }
        }).catch(error => {
            // console.log(error)
        })
    },

    // 获取性别列表
    getUserSexList(e) {      
        request({
            url: "/commonApi/getDictionaryInfo",
            method: "GET",
            data: { 
                dictType: 'sys_user_sex' 
            }
        }).then(res => {
            // console.log(res)
            if(res.code == 0){
                this.setData({
                    sexList: res.data
                })
            }
        }).catch(error => {
            // console.log(error)
        })
    },

    /**
     * 更新个人信息
     */
    updateUserInfo(e){
        let that = this;
        // 传入表单数据，调用验证方法
        if (!this.WxValidate.checkForm(this.data.form)) {
            const error = this.WxValidate.errorList[0]
            this.showModal(error)
            return false
        }
        request({
            url: "/user/updatePersonalInfo",
            reqRSAENCRY: true, // 参数是否加密
            resRSADECRY: false, // 返回值是否解密
            data: that.data.form
        }).then(res => {
            if(res.code == 0){
                that.getUserInfo(() => {
                    wx.showToast({
                        title: '更新成功',
                        icon: 'none',
                        duration: 2000
                    })
                    that.setData({
                        isEdit: false
                    })
                })
            }
        }).catch(error => {
            // console.log(error)
        })
    },

    // /**
    //  * 获取头像和二维码
    //  */
    // getAvatarQrcode() {
    //     request({
    //         url: "/regist/getAvatarAndWechatQrcode",
    //         method: "GET"
    //     }).then(res => {
    //         if(res.code == 0){
    //             this.setData({
    //                 headUrl: res.data.head_url,
    //                 wechatQrcode: res.data.wechat_qrcode
    //             })
    //         }
    //     }).catch(error => {
    //         // console.log(error)
    //     })
    // },

    // /**
    //  * 头像上传
    //  */
    // toCropper() {
    //     wx.navigateTo({
    //       url: `/pages/cropper/index?imgSrc=${this.data.baseUrl+this.data.headUrl}`,
    //     })
    // },
    /** 上传头像弹窗 */
    showCropperPopup(){
        this.setData({
            showCropper: true
        })
    },
    /** 关闭上传头像弹窗 */
    cropperClose(e){
        this.setData({
            showCropper: false
        })
    },
    /** 确认上传头像 */
    cropperUpload(e){
        uploadFile({
            url: "/regist/uploadAvatar", 
            filePath: e.detail.url,
            name: "avatarFile",
            formData: {},
        }).then(res => {
            if(res.code == 0){
                this.setData({
                    "userInfo.headUrl": res.data,
                    showCropper: false
                })
            }
        })
    },


    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    // 表单验证
    initValidate() {
        // 验证字段的规则
        const rules = {
            phoneno: {
                required: true,
                minlength: 11
            },
            postId: {
                required: true
            },
            deptId: {
                required: true
            },
            sex: {
                required: true
            }
        }
        // 验证字段的提示信息，若不传则调用默认的信息
        const messages = {
            phoneno: {
                required: '请输入工作电话',
                minlength: '请输入11位工作电话'
            },
            postId: {
                required: '请选择岗位'
            },
            deptId: {
                required: '请选择机构',
            },
            sex: {
                required: '请选择性别'
            }
        }

        // 创建实例对象
        this.WxValidate = new WxValidate(rules, messages)
    },
    showModal(error) {
        wx.showToast({
            title: error.msg,
            icon: 'none',
            duration: 2000
        })
    },
})